package com.pdweb.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.pdweb.dao.FuncionariosDao;
import com.pdweb.vo.Funcionarios;

/**
 * Servlet implementation class FuncionariosConsultaServlet
 */
@WebServlet("/FuncionariosConsultaServlet")
public class FuncionariosConsultaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FuncionariosConsultaServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doService(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doService(request, response);
	}
	
	protected void doService(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		try {
			String sql = null;
			
			Funcionarios funcionarios = new Funcionarios();

			funcionarios.setNomeFuncionario(request.getParameter("nomeFuncionario"));
			

			FuncionariosDao funcionariosDao = new FuncionariosDao();
			String buscaNumeros = funcionarios.getNomeFuncionario();
			if (funcionarios.getNomeFuncionario() != null) {
				
				Pattern p = Pattern.compile("[0-9]{"+ buscaNumeros.length() +"}");   
				Matcher m = p.matcher(buscaNumeros);
				if (m.find()) {
					if(buscaNumeros.length() == 11){
						sql = "select ID_FUNCIONARIO_FUNC, CARGOS_id_cargo_carg, DIVISOES_ID_DIVISAO_DIV, TURNOS_ID_TURNO_TURN, ST_NOME_FUNC, NM_PIS_FUNC, ST_CIDADE_FUNC, ST_BAIRROEND_FUNC, NM_CEP_FUNC,ST_TELEFONE_FUNC, ST_CELULAR_FUNC, ST_SOBRENOME_FUNC, DT_NASCIMENTO_FUNC, DT_ADMISSAO_FUNC, NM_SALARIO_FUNC, ST_RUAEND_FUNC, NM_NUMEEND_FUNC, ST_UF_FUNC, ST_EMAIL_FUNC, cargos.st_nome_carg, turnos.st_nome_turn, divisoes.ST_NOMEDIVISAO_DIV from funcionarios inner join turnos on (funcionarios.TURNOS_ID_TURNO_TURN = turnos.id_turno_turn) inner join divisoes on (funcionarios.DIVISOES_ID_DIVISAO_DIV = divisoes.id_divisao_div) inner join cargos on (funcionarios.CARGOS_id_cargo_carg = cargos.id_cargo_carg)  where NM_PIS_FUNC = '"+funcionarios.getNomeFuncionario()+"' ;";
					} else{
						sql = "select ID_FUNCIONARIO_FUNC, CARGOS_id_cargo_carg, DIVISOES_ID_DIVISAO_DIV, TURNOS_ID_TURNO_TURN, ST_NOME_FUNC, NM_PIS_FUNC, ST_CIDADE_FUNC, ST_BAIRROEND_FUNC, NM_CEP_FUNC,ST_TELEFONE_FUNC, ST_CELULAR_FUNC, ST_SOBRENOME_FUNC, DT_NASCIMENTO_FUNC, DT_ADMISSAO_FUNC, NM_SALARIO_FUNC, ST_RUAEND_FUNC, NM_NUMEEND_FUNC, ST_UF_FUNC, ST_EMAIL_FUNC, cargos.st_nome_carg, turnos.st_nome_turn, divisoes.ST_NOMEDIVISAO_DIV from funcionarios inner join turnos on (funcionarios.TURNOS_ID_TURNO_TURN = turnos.id_turno_turn) inner join divisoes on (funcionarios.DIVISOES_ID_DIVISAO_DIV = divisoes.id_divisao_div) inner join cargos on (funcionarios.CARGOS_id_cargo_carg = cargos.id_cargo_carg)  where ID_FUNCIONARIO_FUNC = '"+funcionarios.getNomeFuncionario()+"' or divisoes.id_divisao_div = '"+funcionarios.getNomeFuncionario()+"';";
					}
				}else{ 
					System.out.print(sql);
						sql = "select ID_FUNCIONARIO_FUNC, CARGOS_id_cargo_carg, DIVISOES_ID_DIVISAO_DIV, TURNOS_ID_TURNO_TURN, ST_NOME_FUNC, NM_PIS_FUNC, ST_CIDADE_FUNC, ST_BAIRROEND_FUNC, NM_CEP_FUNC,ST_TELEFONE_FUNC, ST_CELULAR_FUNC, ST_SOBRENOME_FUNC, DT_NASCIMENTO_FUNC, DT_ADMISSAO_FUNC, NM_SALARIO_FUNC, ST_RUAEND_FUNC, NM_NUMEEND_FUNC, ST_UF_FUNC, ST_EMAIL_FUNC, cargos.st_nome_carg, turnos.st_nome_turn, divisoes.ST_NOMEDIVISAO_DIV from funcionarios inner join turnos on (funcionarios.TURNOS_ID_TURNO_TURN = turnos.id_turno_turn) inner join divisoes on (funcionarios.DIVISOES_ID_DIVISAO_DIV = divisoes.id_divisao_div) inner join cargos on (funcionarios.CARGOS_id_cargo_carg = cargos.id_cargo_carg)  where divisoes.ST_NOMEDIVISAO_DIV LIKE '%"+funcionarios.getNomeFuncionario()+"%' or funcionarios.ST_NOME_FUNC LIKE '%"+funcionarios.getNomeFuncionario()+"%'; ";
				}

				List<Funcionarios> funcionarios1 = funcionariosDao.consultaFuncionarios(sql);

				if (funcionarios1 != null) {

					request.setAttribute("funcionariosConsulta", funcionarios1);

					getServletContext().getRequestDispatcher(
							"/consulta_funcionario.jsp").forward(request, response);

				} else {
					request.setAttribute("erro", "sem valores");

					getServletContext().getRequestDispatcher(
							"/consulta_funcionario.jsp").forward(request, response);
				}

			}

		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
